Шаг 345 - Что делать когда реквизит не известен.

Много задач сводиться нельзя формализовать. Ну например ввод остатков. Субконто могут быть разные. Кроме того, если речь заходит о универсальных документах, например авансовый отчет то в нем могут быть совершенно разные корреспонденции счетов, а у счетов могут быть разные субконто. Как тут поступать? Можно сделать неопределенный реквизит.

345_1.gif (7660 b)

А определять его программный путем в зависимости от корреспонденции счетов. Итак сделаем на документ кнопку по которой будет менять тип реквизита. Основа всего функция Назначить тип.

НазначитьТип
Назначить тип для реквизита неопределенного вида.
Синтаксис:
НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>)
Англоязычный синоним:
SetType

Параметры:
<ИмяРеквизита> Строковое выражение — название реквизита документа неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту документа. Например:"Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:
Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пишем код.

Процедура Изменить()  
	   Форма.Субконто.НазначитьТип("Справочник.Номенклатура");
КонецПроцедуры

Пробуем. Если кнопку не нажимать то выбрать субконто будет нельзя.

345_2.gif (5821 b)

После установки типа субконто уже можно будет выбрать.

345_3.gif (13462 b)

Hosted by uCoz